C语言的编程。。。` 速度了 高手门 请进。。`

来源:百度知道 编辑:UC知道 时间:2024/06/28 00:24:32
描述
给定一个整整数n(2 ≤ n ≤ 50),求n的最小非平凡因子。

关于输入
输入仅一行,一个正整数n(2 ≤ n ≤ 50)。

关于输出
输出仅一行,如果n是素数,输出prime;否则,输出n的最小非平凡因子。

例子输入
35

例子输出
5

提示
对于合数n,n一定存在不大于sqrt(n)的素因子;
1和n都是n的平凡因子,其他因子称为非平凡因子;
最小非平凡因子一定是素数。

#include<math.h>
int prime(int n)/*检验n是否是素数,是返回1,否返回0*/
{int i,k;
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0)break;
if(i>k)return 1;
else return 0;
}

main()
{int i,n;
printf("Enter a number(2-50):");
scanf("%d",&n);
if(prime(n)==1)printf("prime");/*是素数则输出prime*/
else
for(i=2;;i++)/*不是则求最小非平凡因子,并输出*/
if((prime(i)==1)&&(n%i==0)){printf("%d",i);break;}
}

上面那个死循环?

void main()
{
int count(int n);/*判断n是否是一个素数;是返回0,否则返回1*/
int n,i;
scanf("please put a number(20-50)%d",&n);
while(1)/*判断n是否在20-50之间*/
{
if(n>=20&&n<=50)break;
else scanf("please put a number(20-50)%d",&n);
}
if(count(n)==1)/*n不是素数,找它的最小非平凡因子*/
{
for(i=2;i<n;i++)
if(n%i==0){printf("%d",i);break;}/*找到了n的最小非平凡因子,输出*/
}
else pintf(&quo